package com.bookstore.back.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bookstore.back.entity.UserFavorite;

import java.util.List;
import java.util.Map;

/**
 * 用户收藏服务接口
 * 
 * @author 程序猿_Ti
 * @since 2025-07-22
 */
public interface UserFavoriteService extends IService<UserFavorite> {

    /**
     * 添加收藏
     * 
     * @param bookId 图书ID
     * @return 是否成功
     */
    boolean addFavorite(Integer bookId);

    /**
     * 取消收藏
     * 
     * @param bookId 图书ID
     * @return 是否成功
     */
    boolean removeFavorite(Integer bookId);

    /**
     * 切换收藏状态
     * 
     * @param bookId 图书ID
     * @return 收藏状态（true-已收藏，false-未收藏）
     */
    boolean toggleFavorite(Integer bookId);

    /**
     * 检查是否已收藏
     * 
     * @param bookId 图书ID
     * @return 是否已收藏
     */
    boolean isFavorite(Integer bookId);

    /**
     * 获取用户收藏列表
     * 
     * @return 收藏列表
     */
    List<Map<String, Object>> getUserFavoriteList();

    /**
     * 分页获取用户收藏列表
     * 
     * @param params 分页参数
     * @return 分页收藏列表
     */
    IPage<Map<String, Object>> getUserFavoriteListPage(Map<String, Object> params);

    /**
     * 获取用户收藏数量
     * 
     * @return 收藏数量
     */
    int getUserFavoriteCount();

    /**
     * 清空用户收藏
     * 
     * @return 是否成功
     */
    boolean clearUserFavorites();
}
